import configparser
import os
import requests
from bs4 import BeautifulSoup

# 创建配置解析器
config = configparser.ConfigParser()

# 读取配置文件
config.read('config.ini')

# 获取访问令牌
access_token = config.get('artifactory', 'access_token')

# 确保访问令牌已设置
if not access_token:
    raise ValueError("ARTIFACTORY_ACCESS_TOKEN is not set in the config file.")

# JFrog Artifactory的目标文件夹URL
base_url = "http://fuckapple2.asuscomm.com:28082/artifactory/daily_storage/"

# 指定下载到本地的目录路径
local_dir = 'C:\\Users\\awosh\\Desktop\\Jenkins_Download\\'

# 确保本地目录存在
if not os.path.exists(local_dir):
    os.makedirs(local_dir)

# 设置headers，包括认证信息
headers = {
    'Authorization': f'Bearer {access_token}'
}

# 发送GET请求以获取目标文件夹中的文件列表
response = requests.get(base_url, headers=headers)

# 检查响应状态码
if response.status_code == 200:
    # 使用BeautifulSoup解析HTML
    soup = BeautifulSoup(response.text, 'html.parser')
    files = soup.find_all('a')  # 查找所有的<a>标签

    for file_tag in files:
        file_name = file_tag.text.strip()  # 获取文件名
        if file_name.endswith('.zip'):  # 检查是否为ZIP文件
            # 构造完整的文件URL
            file_url = base_url + file_name
            # 指定下载到本地的完整路径
            local_path = os.path.join(local_dir, file_name)
            # 发送GET请求以下载文件
            file_response = requests.get(file_url, headers=headers, stream=True)

            if file_response.status_code == 200:
                # 文件下载成功，写入文件
                with open(local_path, 'wb') as f:
                    for chunk in file_response.iter_content(chunk_size=8192):
                        f.write(chunk)
                print(f"文件 {file_name} 下载成功，保存在：{local_path}")
            else:
                print(f"文件 {file_name} 下载失败，状态码：{file_response.status_code}")
else:
    print(f"无法获取文件列表，状态码：{response.status_code}")